package br.rui.adiantamento.visao.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.rui.adiantamento.dominio.Funcionario;
import br.rui.adiantamento.negocio.Fachada;

/**
 * Servlet implementation class for Servlet: RedirecionarServlet
 *
 * @web.servlet
 *   name="RedirecionarServlet"
 *   display-name="RedirecionarServlet" 
 *
 * @web.servlet-mapping
 *   url-pattern="/RedirecionarServlet"
 *  
 */
 @SuppressWarnings("serial")
public class RedirecionarServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}  	
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String acao = request.getParameter("acao");
		String url = "";
		if(acao!=null){
			try {

				if(acao.equalsIgnoreCase("cadastrarFuncionario")){
					setRequestClientes(request);
					url = "index.jsp?acao=adiantamento_funcionario&interna=adiantamento_"+acao;
				}
				if(acao.equalsIgnoreCase("consultarFuncionarios")){
					setRequestClientes(request);
					url = "index.jsp?acao=adiantamento_funcionario&interna=adiantamento_"+acao;
				}
				if(acao.equalsIgnoreCase("cadastrarAdiantamento")){
					setRequestFuncionario(request);
					url = "index.jsp?acao=adiantamento_funcionario&interna=adiantamento_"+acao;
				}
				if(acao.equalsIgnoreCase("cadastrarAdiantamentos")){
					setRequestClientes(request);
					url = "index.jsp?acao=adiantamento&interna=adiantamento_"+acao;
				}
				if(acao.equalsIgnoreCase("lancarAdiantamentos")){
					setSessionFuncionarios(request);
					setRequestCliente(request);
					setSessionPeriodo(request);
					url = "index.jsp?acao=adiantamento&interna=adiantamento_"+acao;
				}
				if(acao.equalsIgnoreCase("consultarAdiantamentos")){
					setRequestClientes(request);
					url = "index.jsp?acao=adiantamento&interna=adiantamento_"+acao;
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		request.getRequestDispatcher(url).forward(request,response);
	}
	
	private void setRequestFuncionario(HttpServletRequest request) {
		Funcionario funcionario = Fachada.recuperarFuncinario(request.getParameter("cpf"));
		request.setAttribute("funcionario", funcionario);
	}

	private void setRequestClientes(HttpServletRequest request){
		request.setAttribute("clientes", Fachada.recuperarClientes());
	}
	
	private void setSessionFuncionarios(HttpServletRequest request){
		HttpSession session = request.getSession();
		session.setAttribute("funcionarios", Fachada.recuperarFuncionarios(request.getParameter("cnpjEmpresa")));		
	}
	
	private void setRequestCliente(HttpServletRequest request){
		request.setAttribute("empresa", Fachada.recuperarCliente(request.getParameter("cnpjEmpresa")));
	}
	
	private void setSessionPeriodo(HttpServletRequest request){
		HttpSession session = request.getSession();
		session.setAttribute("periodo", request.getParameter("periodo"));
	}
}